// PROGRAMA : SCRPR001
// BIBLIOTECA : SISP
// SISTEMA : SISP - SISTEMA DE INFORMACOES DE SEGURANCA PUBLICA
// IDENTIFICACAO CRIMINAL
// CLIENTE : GEJUSPC - GERENCIA DE ESTADO DA JUSTICA, SEGURANCA
// PUBLICA E CIDADANIA / INSTITUTO DE IDENT.
// OBJETIVO : EMISSAO DA FOLHA DE ANTECEDENTES CRIMINAIS
// PROGRAMADOR:
// DATA : 18 DE SETEMBRO 2000
// ALTERACAO : TROCA DE NOME DA IMPRESSORA DEFAULT PARA PSSP0023
// : PINHO - 14/11/2012
// : TROCA DE NOME DA IMPRESSORA DEFAULT PARA PSSP0229
// : PINHO - 24/04/2013
// ALTERACAO
package br.com.vti.sisp_sicrim.antigo.controller.programa;

import java.io.FileNotFoundException;
import java.text.ParseException;

import net.sf.jasperreports.engine.JRException;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.relatorios.Scrprxx1Report;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Scrprxx1A;
import br.com.vti.sisp_sicrim.antigo.model.SicCadastro;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Scrg001;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Scrprxx1 OBJETIVO : EMISSAO DA FOLHA DE ANTECEDENTES CRIMINAIS *
 * 
 * @author Incode - Data: mai/2014
 * 
 */
@Resource
@Path("/antigo/scrprxx1")
public class Scrprxx1 {
	// Views utilizadas
	SicCadastro criminalView = new SicCadastro();
	// Telas/relatorios utilizados
	Scrprxx1A scrprxx1A;
	Scrprxx1Report report;
	// Includes utilizados
	// Areas globais / session
	Scrg001 scrg001;
	// Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();
	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;
	Scrprxx1 scrprxx1Anterior;
	String faseproc = "0";

	private int cont = 0;
	private int i = 0;

	private Scrprxx1A preMapas() throws ParseException {
		scrprxx1A = new Scrprxx1A(true, sessao);
		sessao.getScrg001().setWVltw(18);
		report.setDataCorrente(UtilBean.inverteDataCorrente());
		scrprxx1A.setDataCorrente(UtilBean.inverteDataCorrente());
		scrprxx1A.setNumero(0);
		for (int i1 = 1; i1 <= 150; i1++) {
			criminalView.setObservacao(i1, "");
		}
		scrprxx1A.setIdma("");
		return scrprxx1A;
	}

	public Scrprxx1(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar(Scrprxx1A scrprxx1A) {
		try {
			main(scrprxx1A);
		} catch (Exception e) {
			ExceptionProgram excp = new ExceptionProgram();
			excp.trataErroScrcerro(e, sessao, this.getClass().getSimpleName());
		}
	}

	private void main(Scrprxx1A pscrprxx1A) throws ParseException, JRException, FileNotFoundException {
		if (pscrprxx1A == null) {
			primeiraVez = true;
			// scrprxx1A = new Scrprxx1A (primeiraVez);
			scrprxx1A = preMapas();
			scrprxx1A.setNavegar("../scrprxx1/executar");
			scrprxx1A.setJimp("PSSP0229");
			result.include("scrprxx1A", scrprxx1A);
			sessao.setAtributo("SCRPRXX1", this);
			scrprxx1A.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		} else {
			restaurarEstados(pscrprxx1A);
		}

		// RELATORIO 1 PS=63 LS=85 SG=ON
		report = new Scrprxx1Report();
		report.setPageSize(63);
		report.setLineSize(85);
		// RELATORIO
		// DEFINE PRINTER(1) OUTPUT #IMP
		// MP=1
		scrprxx1A.setJimp("PSSP0229");

		// ASSIGN #IMP = 'PSEATI08'
		scrprxx1A.setFdc(UtilBean.concatena(criminalView.getPolegarDireito(), criminalView.getIndicadorDireito(), criminalView.getMedioDireito(), criminalView.getAnularDireito(), criminalView.getMinimoDireito(), criminalView.getPolegarEsquerdo(), criminalView.getIndicadorEsquerdo(), criminalView.getMedioEsquerdo(), criminalView.getAnularEsquerdo(), criminalView.getMinimoEsquerdo()));
		scrprxx1A.setJobservacoez(criminalView.getObservacao());

		scrprxx1A.receberTela(false, result);
		if (UtilBean.funcao.equals(UtilBean.ctt_retorna) || scrprxx1A.getNumero() == 0) {
			Scrpp001 scrpp001 = new Scrpp001(result, sessao);
			scrpp001.executar(null);
			return;
		}
		// Par�grafo: ini01()
		while (criminalView.pesquisaRegEstadualGeral((long) scrprxx1A.getNumero())) {
			if (criminalView.totalRegistros() == 0) {
				if (scrprxx1A.getNumero() != 0) {
					UtilBean.mensagemTexto("O NUMERO INFORMADO DO REGISTRO NAO FOI CADASTRADO,");
					UtilBean.mensagemTexto("OU FOI DIGITADO INCORRETAMENTE,  VERIFIQUE...!");
				}
			}

			scrprxx1A.setJobservacoez(criminalView.getObservacao());
			if (criminalView.getObservacao(1).trim().equals("") && criminalView.getObservacao(2).trim().equals("") && criminalView.getObservacao(3).trim().equals("") && criminalView.getObservacao(4).trim().equals("")) {
				criminalView.setObservacao(1, "NAO FOI REGISTRADA NEM UMA OCORRENCIA PARA ESTE INDIVIDUO ");
			}
			scrprxx1A.setNome(criminalView.getNomeCompleto());
			formataRelatorio();
			// if (inicioPagina)
			// report.gravaRelatorio( 1);

			// RELATORIO
			cont += 1;
			if (cont == 2) {

				cont = 0;
				i = 0;
				for (i = 1; i <= 100; i++) {
					if (!scrprxx1A.getJobservacoez(i).trim().equals("")) {
						report.gravaRelatorio(2);
						// UtilBean.mensagemTexto(scrprxx1A.getJobservacoez[1]()
						// scrprxx1A.getJobservacoez[2]()
						// scrprxx1A.getJobservacoez[3]()
						// scrprxx1B.getJobservacoez());
						// RELATORIO
					}
				}
				report.gravaRelatorio(3);
				// RELATORIO
			}
			report.imprimir();
		}

		sessao.setAtributo("SCRPRXX1", this);
		result.include("scrprxx1A", scrprxx1A);
		scrprxx1A.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
	}

	private void restaurarEstados(Scrprxx1A pscrprxx1A) {
		this.scrprxx1Anterior = (Scrprxx1) sessao.getAtributo("SCRPRXX1");
		if (pscrprxx1A != null) {
			scrprxx1A = pscrprxx1A;
		} else {
			scrprxx1A = this.scrprxx1Anterior.scrprxx1A;
		}
		scrprxx1A.setSessao(sessao);
		this.faseproc = this.scrprxx1Anterior.faseproc;
	}

	private void formataRelatorio() throws ParseException {
		report.setAaaammdd(UtilBean.inverteData(criminalView.getDataNasc()));
		report.setAnudir(criminalView.getAnularDireito());
		report.setAnuesq(criminalView.getAnularEsquerdo());
		report.setApelidoAlcunhas(criminalView.getApelidoAlcunhas(1));
		report.setInddir(criminalView.getIndicadorDireito());
		report.setIndesq(criminalView.getIndicadorEsquerdo());
		report.setMeddir(criminalView.getMedioDireito());
		report.setMedesq(criminalView.getMedioEsquerdo());
		report.setMindir(criminalView.getMinimoDireito());
		report.setMinesq(criminalView.getMinimoEsquerdo());
		report.setNaturalidade(criminalView.getNaturalidade());
		report.setNomeMae(criminalView.getNomeMae());
		report.setPoldir(criminalView.getPolegarDireito());
		report.setPolesq(criminalView.getPolegarEsquerdo());
		report.setRegistroEstadualGeral(criminalView.getRegEstadualGeral());
		report.setId(scrprxx1A.getId());
		report.setIm(scrprxx1A.getIm());
		report.setIa(scrprxx1A.getIa());
		report.setNomeI(scrprxx1A.getNomeI());
		report.setNomeR(scrprxx1A.getNomeR());
		report.setTexto3(scrprxx1A.getTexto3());
		report.setHoraCorrente(scrprxx1A.getHoraCorrente());
		report.setTexto2(scrprxx1A.getTexto2());
		report.setTexto1(scrprxx1A.getTexto1());
	}
}
